package org.xx.armory.bindings;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * 标记方法参数。请求中的数据（比如HTTPRequest中的URL参数，Form表单数据等等）可以被绑定到这个方法参数。
 *
 * @author Haart
 */
@Target(value = PARAMETER)
@Retention(value = RUNTIME)
@Documented
public @interface Param {
    /**
     * 获取参数名称
     *
     * @return 参数名称
     */
    String value() default "";

    /**
     * 是否作为原始文本。
     * <p>
     * <strong>该类型的参数的值必须是{@code java.lang.String}，并且首尾的空格都是有意义的。</strong>
     * </p>
     *
     * @return 原始文本。
     */
    boolean text() default false;
}
